package com.dyna.patterns.creation.prototype;

public class MyDemo {

    /**
     * 是用于创建重复的对象，同时又能保证性能。
     * 1、GuiguMyBatis：操作数据库，从数据库里面查出很多记录（70%改变很少）
     * 2、每次查数据库，查到以后把所有数据都封装一个对象，返回。
     *    10000 thread：查一个记录： new User("zhangsan",18)；每次创建一个对象封装并返回
     *    系统里面就会有10000个User;浪费内存
     * 3、解决：缓存；查过的保存。
     *          如果再查相同的记录，拿到原来的原型对象
     *
     * 4、此时直接拿到缓存中的对象。
     *
     */
    public static void main(String[] args) throws CloneNotSupportedException {
        DynamicMybatis dynamicMybatis = new DynamicMybatis();
        //从数据库查询
        Person fromDb1 = dynamicMybatis.getPerson("dyna");
        System.out.println("1-->"+fromDb1);

        //此时fromDb1修改
        fromDb1.setUsername("ddd");
        System.out.println("修改以后的1为:"+fromDb1);

        Person fromDb2 = dynamicMybatis.getPerson("dyna");
        System.out.println("2-->"+fromDb2);
        Person fromDb3 = dynamicMybatis.getPerson("dyna");
        System.out.println("3-->"+fromDb3);

        System.out.println(fromDb1 == fromDb2);
    }

}
